Skip to contentMethod: serialize(MultilingualString, SerializationContext)
1: package cz.cvut.kbss.jsonld.serialization.serializer.context;
2:
3: import cz.cvut.kbss.jopa.model.MultilingualString;
4: import cz.cvut.kbss.jsonld.JsonLd;
5: import cz.cvut.kbss.jsonld.serialization.JsonNodeFactory;
6: import cz.cvut.kbss.jsonld.serialization.model.ObjectNode;
7: import cz.cvut.kbss.jsonld.serialization.serializer.ValueSerializer;
8: import cz.cvut.kbss.jsonld.serialization.traversal.SerializationContext;
9:
10: /**
11: * This is used to serialize {@link MultilingualString} values.
12: */
13: public class ContextBuildingMultilingualStringSerializer implements ValueSerializer<MultilingualString> {
14:
15: @Override
16: public ObjectNode serialize(MultilingualString value, SerializationContext<MultilingualString> ctx) {
17:• if (ctx.getTerm() != null) {
18: registerTermMapping(ctx);
19: }
20:• final ObjectNode node = ctx.getField() != null ? JsonNodeFactory.createObjectNode(ctx.getFieldName()) : JsonNodeFactory.createObjectNode();
21: value.getValue().forEach((lang, text) -> node.addItem(JsonNodeFactory.createLiteralNode(lang != null ? lang : JsonLd.NONE, text)));
22: return node;
23: }
24:
25: static void registerTermMapping(SerializationContext<MultilingualString> ctx) {
26: final ObjectNode mapping = JsonNodeFactory.createObjectNode(ctx.getFieldName());
27: mapping.addItem(JsonNodeFactory.createLiteralNode(JsonLd.ID, ctx.getTerm()));
28: mapping.addItem(JsonNodeFactory.createLiteralNode(JsonLd.CONTAINER, JsonLd.LANGUAGE));
29: ctx.registerTermMapping(ctx.getFieldName(), mapping);
30: }
31: }